package com.label.Config.Logger;

import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggerImpl {

//    private final static Logger logger = LoggerFactory.getLogger(Log.class);
//
//    @Autowired
//    private UserUtil userUtil;
//
//    @Autowired
//    private SysLogJAPDao sysLogJAPDao;
//
//    @Autowired
//    private SysOpLogJPADao sysOpLogJPADao;
//
//
//    @Pointcut("@annotation(com.viewstar.studentlabel.custom.config.logger.Log)")
//    public void LogPointCut() {
//    }
//
//    @AfterReturning(pointcut = "LogPointCut()", returning = "jsonResult")
//    public void doAfterReturning(JoinPoint joinPoint, Object jsonResult)
//    {
//        handleLog(joinPoint, null, jsonResult);
//    }
//
//    @AfterThrowing(value = "LogPointCut()", throwing = "e")
//    public void doAfterThrowing(JoinPoint joinPoint, Exception e)
//    {
//        handleLog(joinPoint, e, null);
//    }
//
//    protected void handleLog(final JoinPoint joinPoint, final Exception e, Object jsonResult)
//    {
//        try
//        {
//            SysLog operLog = new SysLog();
//            // 获得注解
//            Log controllerLog = getAnnotationLog(joinPoint);
//            if (controllerLog == null)
//            {
//                return;
//            }
//
//            operLog.setStatus(1);
//            // 请求的地址
//            String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
//            operLog.setOperIp(ip);
//            if (e != null)
//            {
//                operLog.setStatus(0);
//                operLog.setErrorMsg(StringUtil.substring(e.getMessage(), 0, 2000));
//            }
//            // 设置方法名称
//            String className = joinPoint.getTarget().getClass().getName();
//            String methodName = joinPoint.getSignature().getName();
//            operLog.setMethod(className + "." + methodName + "()");
//            // 设置请求方式
//            operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
//            // 处理设置注解上的参数
//            operLog.setContent(controllerLog.value());
//
//
//            UserDO loginUser=new UserDO();
//            // 获取当前的用户    type=1为登录，type=0为退出登录，默认为3 操作命令
//            if(controllerLog.type()==1)
//            {
//                ResponseBean responseBean=(ResponseBean)jsonResult;
//                Map<String,Object> result=GsonUtil.getGson().fromJson(responseBean.getData().toString(), Map.class);
//                operLog.setOperName(result.get("username").toString());
//            }
//            else {
//                loginUser = userUtil.getUser();
//                if (loginUser != null)
//                {
//                    operLog.setOperName(loginUser.getUsername());
//                }
//            }
//            // 保存数据库
//            if(controllerLog.type()!=2)
//                sysLogJAPDao.save(operLog);
//            else{
//                sysOpLogJPADao.save(BeanUtils.supply(operLog,SysOpLog.class));
//            }
//
//        }
//        catch (Exception exp)
//        {
//            // 记录本地异常日志
//            logger.error("==前置通知异常==");
//            logger.error("异常信息:{}", exp.getMessage());
//            exp.printStackTrace();
//        }
//    }
//
//    private Log getAnnotationLog(JoinPoint joinPoint) throws Exception
//    {
//        Signature signature = joinPoint.getSignature();
//        MethodSignature methodSignature = (MethodSignature) signature;
//        Method method = methodSignature.getMethod();
//
//        if (method != null)
//        {
//            return method.getAnnotation(Log.class);
//        }
//        return null;
//    }

}
